@Allgemeine Hinweise
Dieses ist ein Ausschnitt aus dem Handbuch. Aus Platzgründen ist
leider keine vollständige Beschreibung aller Funktionen möglich.
Aus diesem Grund sind Querverweise und die Beispiele nicht enthalten.
Die Realisierung dieser Funktion wird mit dem Hilfesystem ermöglicht,
wobei gleichzeitig gezeigt werden kann, das dieses System auch große
Datenmengen schnell handhaben kann. Die erforderlichen Codeanweisungen
sind weniger als 10 Zeilen.
Wir hoffen das aus dieser Übersicht die Arbeitsweise
und das Konzept der KIWI C TOOLS V 3.20 hervorgeht, und Sie von
der Leistungsfähigkeit der TOOLS überzeugen wird.

@cls
void cls();

■ Beschreibung:

Die Funktion cls löscht den gesamten Bildschirminhalt mit dem 
Initialisierungszeichen das bei init_screen angegeben wurde. 
Damit werden auch alle bestehenden Fenster und der interne 
Bildschirm gelöscht. Die Fenster werden damit aber nicht gelöscht, 
deshalb sollte diese Funktion nur angewendet werden, wenn keine Fenster 
eröffnet sind.

@get_cursor_size
int get_cursor_size();

■ Beschreibung:

Die Funktion get_cursor_size übergibt die Form des aktuellen 
Hardwarecursors.

@get_screen_height
int get_screen_height();

■ Beschreibung:

Die Funktion get_screen_height übergibt die Höhe des 
verfügbaren Bildschirms in Zeilen. Die Höhe kann von 25- 88 Spalten 
variieren, je nach Art des verwendeten Bildschirmadapters und 
Bildschirmmodus.

@get_screen_wide
int get_screen_wide();

■ Beschreibung:

Die Funktion get_screen_wide übergibt die Breite des verfügbaren 
Bildschirms in Spalten. Die Breite kann von 40-132 Spalten variieren, 
je nach Art des verwendeten Bildschirmadapters und des Bildschirmmodus.

@init_color_table
int init_color_table(nr,v,b,vi,bi);

■ Parameter:
int nr;                       Nummer der Farbtabelle.
unsigned char v,b,vi,bi;      MACROS aus kiwi_inc.h

■ Beschreibung:

Die Funktion init_color_table initialisiert eine Farbtabelle mit 
ausgewählten Farben. Das Fenstersubsystem unterstützt bis zu 5 
verschiedene Farbtabellen(beginnend bei 0), die durch die 
Funktion set_color_table angewählt werden. Die Farbtabelle 0 
wird bei dem Aufruf init_screen initialisiert und ist standardmäßig 
vorgewählt. Alle Ausgaben auf den Bildschirm erscheinen mit den 
in der aktuellen Farbtabelle ausgewählten Farbattributen.
Ist ein Monochrombildschirm angeschlossen, werden alle Farbtabellen 
automatisch auf VWEIS,HSCHWARZ,VSCHWARZ,HWEIS limitiert. 

@init_screen
int init_screen(v1,h1,v2,h2,ini,mode);

■ Parameter:

unsigned char v1,h1,v2,h2;    MACROS aus kiwi_inc.h. Definition für
			      Standardfarbe und Inversdarstellung.
unsigned char ini;            Definition der Bildschirmhintergrundfläche.
int mode;                     Festlegung des Bildschirmzugriffsmodus.

■ Beschreibung:

Die Funktion init_screen initialisiert das gesamte Fenstersystem und 
muß vor jedem weiteren Befehl aus der KIWITOOLS Library aufgerufen 
werden, der eine Bildschirmmanipulation vornimmt (außer set_video_mode). 
Es wird der aktuelle Bildschirmmodus übernommen, sofern es ein 
Textmodus ist. Die Bildschirmaddresse und die Bildschirmgröße 
werden automatisch angepasst. Bei Verwendung des Monochrom-Modes 7 
werden die Farbangaben automatisch auf Schwarz und Weiß beschränkt.
Wird ein Grafikmodus vorgefunden, erfolgt automatisch eine 
Umschaltung in den Modus 3. Wird ein Monochromadapter 
(Herkules oder MDA) vorgefunden, wird automatisch auf Modus 7 geschaltet.

@reset_screen
void reset_screen();

■ Beschreibung:

Die Funktion reset_screen re-initialisiert das gesamte Bildschirmsystem 
und sollte als eine der letzten Anweisung eines Programmes aufgerufen 
werden, um eventuell noch allozierte Speicherbereiche freizugeben. 
Der Bildschirm wird dabei gelöscht.

@screen_pos
int screen_pos(x,y);

■ Parameter:

int x,y;     Bildschirmkoodinaten 

■ Beschreibung:

Die Funktion screen_pos berechnet aus den absoluten Koordinaten x,y, 
die entsprechende Position innerhalb des Bildschirm wenn dieser als 
eindimensionaler Vektor aufgefaßt wird. Diese Funktion ist bei 
einigen Ausgabefunktionen als Argument notwendig.

@scroll_screen_unit
int scroll_screen_unit(xa,ya,xe,ye,dir,zeich);

■ Parameter:

int xa,ya,xe,ye;      Koordinaten des Scrollbereichs 
int dir;              Richtung in die gescrollt wird.
		      MACRO aus kiwi_inc.h
		      SCROLL_HOCH,SCROLL_RUNTER
		      SCROLL_LINKS,SCROLL_RECHTS 
unsigned char zeich;  Zeichen mit dem die freiwerdende
		      Zeile bzw Spalte aufgefüllt wird

■ Beschreibung:

Die Funktion scroll_screen_unit scrollt den Bildschirm um jeweils 
1 Reihe oder Spalte in die durch dir angegebene Richtung. An der 
freiwerdenden Zeile oder Spalte werden Zeichen mit den 
gültigen Attributwerten erzeugt.

@set_color
int set_color(mode);

■ Parameter:

int mode;     NORM_COL für Normale Farbdarstellung
	      INV_COL  für Inverse Farbdarstellung
	      FLIP für Umschalten der Farbe

■ Beschreibung:

Die Funktion set_color schaltet die Standardfarbattribute von 
Normaldarstellung auf Inversdarstellung oder zurück. Jede 
Farbtabelle besteht aus einer Vorder- und Hintergrundfarbe für 
Normal und Inversdarstellung(insgesamt also 4 Farben).
Mit dieser Funktion können nun die Standardattribute einfach zwischen 
der Normal un der Inversdarstellung gewechselt werden.
Alle nachfolgenden Ausgaben, die Standardattribute benutzen, 
werden beeinflußt, jedoch keine bereits bestehenden Ausgaben.

@set_color_table
int set_color_table(nr);

■ Parameter:

int nr;         Nummer der Farbtabelle.

■ Beschreibung:

Die Funktion set_color_table wählt eine zuvor initialisierte 
Farbtabelle aus, und setzt die dort definierten Farbattribute 
als die aktuellen Standardattribute ein. Das Fenstersubsystem 
unterstützt bis zu 5 Farbtabellen (0-4). Die Farbtabelle 0 wird 
bei dem Aufruf init_screen initialisiert. Alle Ausgaben auf dem 
Bildschirm, bei denen Standardattribute benutzten werden, sind durch 
diesen Aufruf beeinflußt. Bereits bestehende Ausgaben werden nicht 
beeinflußt.  Wenn die gewählte Farbtabelle nicht definiert wurde, 
wird der Funktionsaufruf ignoriert.

@set_cursor_shape
void set_cursor_shape(start,end);

■ Parameter:

int start,end;         Start, bzw Endzeile des Cursors

■ Beschreibung:

Die Funktion set_cursor_shape schaltet den normalen Hardwarecursor so um, 
daß die Darstellung von Start - Endzeile geht. Der Cursor kann bei 
Monochrom von 1-13 und bei Farbadaptern von 1-7 gehen.

@set_cursor_size
int set_cursor_size(mode);

■ Parameter:

int mode;       MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_cursor_size schaltet den normalen 
Hardwarecursor auf MODE. Dabei ist der Cursor in jedem Fall 
vorhanden, er wird nur eventuell nicht dargestellt.

@set_output_mode
int set_output_mode(mode);

■ Parameter:

int mode;     MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_output_mode schaltet die Art des Bildschirmzugriffs 
um. Zur Verfügung stehen BIOS und DIREKT. BIOS Mode ist langsamer 
als DIREKT Mode, da das BIOS dabei benutzt wird. Der Direktzugriff 
ist der schnellstmögliche Zugriff auf den Bildschirm, kann aber in  
manchen Fällen zu Problemen führen. Der Zugriffsmode kann 
jederzeit geändert werden.

@set_screen_size
void set_screen_size(x,y);

■ Parameter:

int x,y;      Gewünschte Bildschirmgröße SpaltenxZeilen

■ Beschreibung:

Die Funktion set_screen_size setzt die Bildschirmgröße auf X * Y Zeichen.
Diese Funktion sollte im Zusammenhang mit set_video_mode aufgerufen werden, 
um den interen und den pyhsikalischen Bildschirm auf die gewünschte Größe 
zu setzen. Diese Funktion kann auch während der Laufzeit aufgerufen 
werden. Um den Bildschirm wiederherzustellen (set_video_mode löscht 
den physikalischen Bildschirm) sollte die Funktion refresh_screen 
benutzt werden. Eventuell muß der Mausbereich ebenfalls angepasst werden.

@compute_window_position
void compute_window_position(x,y,breite,hoehe,xa,ya,xe,ye);

■ Parameter:

int x,y;       Koordinaten der linken oberen Ecke des Fensters
int breite;    Gewünschte Fensterbreite
int hoehe;     Gewünschte Fensterhöhe
int *xa,*ya;   Berechnete Koordinaten der linken oberen Ecke
int *xe,*ye;   Berechnete Koordinaten der rechten unteren Ecke

■ Beschreibung:

Die Funktion compute_window_position berechnet die Eckkordinaten 
eines Fensters durch Angabe der linken oberen Ecke, der Breite und 
der Höhe des Fensters. Dabei werden die Koordinaten auf die 
Bildschirmgröße angepasst. Für x,y kann auch eines der MACROS AL,AM,AR 
angegeben werden, wodurch die Fensterposition der jeweiligen Achse 
linksbündig, mittig oder rechtsbündig ausgerichtet wird.

@get_window_edge
int get_window_edge(win,xa,ya,xe,ye);

■ Parameter:

WINDOW win;            Fensterbezeichner auf das Fenster.
int *xa,*ya,*xe,*ye;   Grenzen des beschreibbaren Fensterbereichs.

■ Beschreibung:

Die Funktion get_window_edge übergibt die obere linke und untere rechte 
Ecke des beschreibbaren Fensterbereichs des Fensters win.
Da bei Erstellung die angegeben Fenstergrenzen überprüft und 
gegebenenfalls korrigiert werden, ob Sie innerhalb des Bildschirms 
liegen, ist dieses die einzige zuverlässige Methode die realen 
Grenzen eines Fensters zu erfassen. Ist das Fenster nicht vorhanden 
werden die Bildschirmgrenzen übergeben.

@get_last_window
WINDOW get_last_window();

■ Beschreibung:

Das Funktion get_last_window gibt den Fensterbezeichner auf das zuletzt 
erstellte, bzw das oberste Window zurück. Wenn Sie mit dem 
Windowmanager arbeiten, ist dieses die einzige Möglichkeit, das 
aktuelle oberste Window zu erfassen.

@get_linked_screen
VSCREEN get_linked_screen(win);

■ Parameter:

WINDOW win;     Fensterbezeichner auf das Fenster.

■ Beschreibung:

Das Funktion get_linked_screen gibt den gelinkten virtuellen Bildschirm 
des Windows win zurück. Dieser Bezeichner kann benutzt werden, 
um z.B. weiter Windows an den Screen zu linken.

@init_window
int init_window(nr);

■ Parameter:

int nr;     Anzahl Fenster die geöffnet werden können.

■ Beschreibung:

Die Funktion init_window initialisiert das Fenstersystem und sollte 
in die Funktion init_tools eingebunden werden. Durch nr geben Sie an, 
wieviele Fenster gleichzeitig eröffnet werden können. 
Die maximale Anzahl der Fenster hängt von dem verfügbaren Speicherplatz 
im Far Heap Speicher ab. Da die komplette Fensterverwaltung und 
Speicherung in diesen Bereich verlagert ist, tritt keine 
Beeinträchtigung des Speicherplatzes im aktuellen Speichersegment auf.
(wichtig bei Small Memory Modell Programmen). Ist nr kleiner als 5 wird 
Platz für 5 Fenster bereitgestellt. Dieser Wert ist während der Laufzeit 
eines Programms nicht zu ändern, sollte daher nicht zu klein, aber 
auch nicht zu groß gewählt werden. 

@init_window_manager
int init_window_manger();

■ Beschreibung:

Die Funktion init_window_manager initialisiert den Windowmanger und 
muß vor Benutzung desselben aufgerufen werden. Die Benutzung des 
Windowmanager muß nicht durch eine reset Funktion abgemeldet werden.
Diese Funktion sollte in die Funktion init_tools aufgenommen werden.

@init_virtuell_screen
int init_virtuell_screen(nr);

■ Parameter:

int nr;       Anzahl Screen die geöffnet werden können.

■ Beschreibung:

Die Funktion init_virtuell_screen initialisiert das Screenssystem und 
sollte in die Funktion init_tools eingebunden werden.
Durch nr geben Sie an, wieviele virtuell Screens gleichzeitig eröffnet 
werden können. Die maximale Anzahl der Screens hängt von dem 
verfügbaren Speicherplatz im Far Heap Speicher ab. Da die komplette 
Screenverwaltung und Speicherung in diesen Bereich verlagert ist, 
tritt keine Beeinträchtigung des Speicherplatzes im aktuellen 
Speichersegment auf.(wichtig bei Small Memory Modell Programmen). 
Die Anzahl ist während der Laufzeit eines Programms nicht zu ändern, 
sollte daher nicht zu klein, aber auch nicht zu groß gewählt werden.

@link_virtuell_screen
int link_virtuell_screen(vs,win,xoff,yoff);

■ Parameter:

VSCREEN vs;               Bezeichner des virtuellen Screen
WINDOW win;               Bezeichner des Windows
unsigned int xoff,yoff;   x,y Offset der linken oberen Bezugskanten.

■ Beschreibung:

Die Funktion link_virtuell_screen erzeugt eine Verbindung zwischen einem 
Window und einem virtuellen Screen. Ist das Window größer als der 
virtuelle Screen wird das Window vorher entsprechend verkleinert. Durch 
diese Funktion wird ein statisches Window zu einem dynamischen Window, 
es erhält alle SAA Eigenschaften, wie Scrollbalken und Manipulationspunkte 
und kann jederzeit mit dem Windowmanager manipuliert werden. Die 
xoff, yoff Werte geben den Abstand der linken oberen Kanten des 
Screens und des Windows an.

@load_window
int load_window(pfad);

■ Parameter:

char *pfad;     Dateipfad der Maske

■ Beschreibung:

Die Funktion load_window lädt eine Windowmaske, die mit dem 
Screenmanager, oder der Funktion store_window erzeugt wurde, von 
pfad und zeigt diese am Bildschirm an. Sämtlische Informationen 
über Typ Form und Inhalt enthält dabei die Maske, so daß keine 
zusätzlichen Informationen angegeben werden müssen. Dabei kann das 
Window statisch, oder dynamisch sein, Zeichen enthalten oder Ein.- bzw 
Ausgabepositionen definieren.

@move_window
int move_window(win,anz,dir);

■ Parameter:

WINDOW win;     Fensterbezeichner auf das Fenster.
int anz;        Anzahl Spalten,bzw. Zeilen um die das
		Fenster zu bewegen ist.
int dir;        Richtungsangabe durch MACRO aus kiwi_inc.h.

■ Beschreibung:

Die Funktion move_window bewegt das Fenster win um anz Zeilen, bzw 
Spalten in die durch dir angebene Richtung. Das Fenster win muß ein 
top window sein, das heißt es darf nicht überlappt werden.
Wird es denoch überlappt, wird das Fenster win zuerst zum top_window 
geändert. An den Bildschirmgrenzen wird die Bewegung gestoppt und 
der Funktionsaufruf ignoriert.

@open_virtuell_screen
VSCREEN open_virtuell_screen(xsize,ysize);

■ Parameter:

int xsize,ysize;     Größe des zu erzeugenden virtuellen Bildschirms

■ Beschreibung:

Die Funktion open_virtuell_screen öffnet einen virtuellen Bildschirm 
der Größe xsize*ysize. Dieser Bildschirm müß zu einem Window 
gelinkt werden, um Manipulationen vornehmen zu können.

@open_vs_window
WINDOW open_vs_window(name,xa,ya,xe,ye,rand,xsize,ysize);

■ Parameter:

char *name;       Fensterüberschrift.
int xa,ya;        Koordinatenpaar links oben.
int xe,ye;        Koordinatenpaar rechts unten.
int rand;         Fensterrand, siehe open_window.
int xsize,ysize;  Größe des zu erzeugenden virtuellen Bildschirms

■ Beschreibung:

Die Funktion open_vs_window öffnet ein dynamisches Window am Bildschirm. 
Diese Funktion arbeites analog zu open_window, daher siehe weiter 
Informationen dort. Im Gegensatz zu open_window erzeugt diese 
Funktion ein virtuellen Bildschirm der Größe xsize*ysize und linkt 
diesen zu dem Window. Es ist direkt ein dynamischen Window. Wird dieses 
Window gelöscht, so wird auch der virtuelle Screen gelöscht.

@open_window
WINDOW open_window(name,xa,ya,xe,ye,rand);

■ Parameter:

char *name;    Fensterüberschrift.
int xa,ya;     Koordinatenpaar links oben.Die erste Position ist 1,1
int xe,ye;     Koordinatenpaar rechts unten.
	       Die letzte Position ist bei einer 80x25 Darstellung 80,25.
int rand;      MACRO aus kiwi_inc.h. Festlegung des Fensterrand.

■ Beschreibung:

Die Funktion open_window öffnet ein Fenster am Bildschirm. Die 
Zeichenkette name wird mittig am oberen Rand eingeblendet,wenn das 
Fenster mit Rand erstellt wird. Die angegeben Koordinaten sind 
relativ zum Bildschirm und werden auf die geltenden Regeln hin 
überprüft und gegebenenfalls korrigiert. Das Fenster wird mit den 
zur Erstellungszeit gültigen Attributwerten erzeugt.
Als Besonderheit gibt es die möglichkeit das Fenster ausgerichtet 
am Bildschirm zu erstellen. Dazu kann als xa oder ya eines der 
MACROS AL,AM,AR eingesetzt werden. Diese bedeuten Ausrichtung 
Links, Mitte, Rechts. Bei Benutzung als ya gilt AL als Ausrichtung 
Oben und AR als Ausrichtung Unten. Wenn eines der Anfangskoordinaten 
als MACRO aufgerufen wird, gilt der jeweilige Endwert als Abstand 
oder Breite, bzw Höhe des Fensters.

@print_mask
int print_mask(win,start,"Format",arg1,arg2,...);

■ Parameter:

WINDOW win;          Fensterbezeichner auf das Fenster.
int start;           Startposition innerhalb der Maske
const char *format;  Formatanweisungen für die Ausgabe
arg1,arg2,...        Variabale Anzahl Argumente

■ Beschreibung:

Die Funktion print_mask ermöglicht die formatierte Ausgabe von Daten 
in einer Maske. Die Verfahrensweise ist ähnlich der Standardfunktion 
printf. Wie diese erlaubt auch print_mask eine variable Argumentenanzahl. 
In einer Maske kann durch die Zeichen ACSII 64 oder ASCCI 15  
eine Ein- Ausgabeposition definiert werden, wobei ASCII 15 eine 
inverse Darstellung erzwingt. Diese Positionen werden von oben nach 
unten und links nach rechts innerhalb der Maske durchnummeriert. Diese 
Funktion beginnt ab Position start mit der Ausgabe und erhöht die 
Position jeweils um 1. Wenn die Datentypen innerhalb der Maske definiert 
wurden, muß für format ein "x" angegeben werden. Wenn format 
ungleich "x" wird der Formatstring als bindendes Format akzeptiert und 
entsprechend ausgewertet. Ein Formatstring ungleich "x" überschreibt 
alle Maskenformatangaben. In dem Formatstring können alle innerhalb der 
TOOLS definierten Datentypen angegeben werden. Dazu muß für jedes Argument 
ein Eintrag innerhalb des Formatstrings an der jeweiligen Position vorhanden 
sein. Dieser Formatstring orientiert sich ebenfalls an printf und hat 
folgenden Aufbau.
%[FORMAT]typ    Zulässig sind folgende Formate bei folgenden Typen

Strings %s      für Ausgabe der Länge des Strings
		%25s   für Ausgabe von 25 Zeichen.
Character %c    Ausgabe eines Characters (kein Format zulässig)
Integer %d      Ausgabe Integer Standardlänge 6 Zeichen linksbündig
		%8rd Ausgabe 8 Stellen rechstbündig
Long %l         Ausgabe Long Standardlänge 10 Zeichen linksbündig
		%r12l Ausgabe 12 Stellen rechstbündig
Float %f        Ausgabe Float Standard 10 Stellen 4 NK linksbündig
		%r8.3f Ausgabe Float 8 Stellen 3 Nk rechtsbündig
Datum %M        Ausgabe Datum (Kein Format zulässig)
TIME %T         Ausgabe Zeit Standardformat bis Sekunden
		%h Nur Stunden
		%m Bis Minuten
		%z Bis Hunderstel


Beachten Sie, DATUM und ZEIT müssen als Pointer auf den Wert übergeben 
werden, alle anderen Daten müssen als Werte übergeben werden, dort ist 
keine Call by reference möglich. Sind mehr Argumente als Formate 
vorhanden, werden die restlichen Argumente ignoriert. Sind weniger 
Position in der Maske vorhanden, als Argumente erfolgt die Ausgabe bei 
Position 1,1. Stellen Sie sicher, daß die Anzahl Formate und die 
Anzahl Argumente und deren Typen übereinstimmen. Sie können die 
Maske beliebig ändern, wenn Sie die Positionen in der Reihenfolge 
verändern, müssen Sie auch den entsprechen print_mask Aufruf ändern, 
anderfalls erfolgt die Ausgabe an falschen Stellen.

@reset_window
void reset_window();

■ Beschreibung:

Die Funktion reset_window schließt die Benutzung des Fenstersysstem ab. 
Eventuell noch alloziierte Speicherbereiche werden dabei freigegeben. 
Diese Funktion sollte in die Funktion init_tools eingebunden werden.

@reset_virtuell_screen
void reset_virtuell_screen();

■ Beschreibung:

Die Funktion reset_virtuell_screen schließt die Benutzung des 
Screensysstems ab. Eventuell noch alloziierte Speicherbereiche werden 
dabei freigegeben. Diese Funktion sollte in die Funktion init_tools 
eingebunden werden.

@scanf_mask
int scanf_mask(win,start,"Format",arg1,arg2,...);

■ Parameter:

WINDOW win;           Fensterbezeichner auf das Fenster.
int start;            Startposition innerhalb der Maske
const char *format;   Formatanweisungen für die Ausgabe
arg1,arg2,...         Variabale Anzahl Argumente

■ Beschreibung:

Die Funktion scanf_mask ermöglicht die formatierte Eingabe von Daten 
in einer Maske. Die Verfahrensweise ist ähnlich der Standardfunktion 
scanf. Wie diese erlaubt auch scanf_mask eine variable 
Argumentenanzahl. In einer Maske kann durch die Zeichen ACSII 64 
oder ASCCI 15  eine Ein- Ausgabeposition definiert werden, 
wobei ASCII 15 eine inverse Darstellung erzwingt. Diese Positionen 
werden von oben nach unten und links nach rechts innerhalb der Maske 
durchnummeriert. Diese Funktion beginnt ab Position start mit der 
Ausgabe und erhöht die Position jeweils um 1. Wenn die Datentypen 
innerhalb der Maske definiert wurden, muß für format ein "x" angegeben 
werden. Wenn Format ungleich "x" wird der Formatstring als bindendes 
Format akzeptiert und entsprechend ausgewertet. Ein Formatstring 
ungleich "x" überschreibt alle Maskenformatangaben. In dem 
Formatstring können alle innerhalb der TOOLS definierten Datentypen 
angegeben werden. Dazu muß für jedes Argument ein Eintrag 
innerhalb des Formatstrings an der jeweiligen Position vorhanden sein. 
Dieser Formatstring orientiert sich ebenfalls an scanff und ist im Aufbau der Funktion print_mask 
angeglichen.

Beachten Sie, das alle Argumente Pointer auf den jeweiligen Wert sein 
müssen. Sind mehr Argumente als Formate vorhanden, werden die 
restlichen Argumente ignoriert. Sind weniger Position in der Maske 
vorhanden, als Argumente erfolgt die Ausgabe bei Position 1,1.
Stellen Sie sicher, daß die Anzahl Formate und die Anzahl Argumente 
und deren Typen übereinstimmen. Sie können die Maske beliebig 
ändern, wenn Sie die Positionen in der Reihenfolge verändern, 
müssen Sie auch den entsprechen print_mask Aufruf ändern, anderfalls 
erfolgt die Eingabe in falscher Reihenfolge. Diese Funktion zeigt zuerst 
alle Daten in den jeweiligen Feldern vor der Eingabe. Während der 
Eingabe können Sie die mittels den Cursortasten oder der Maus frei 
in der Maske hin und herspringen. Die letzte Eingabe beendet die Funktion, 
Escape bricht die Eingabe an beliebiger Stelle ab.

@set_window_color
int set_window_color(win,mode);

■ Parameter:

WINDOW win;    Fensterbezeichner auf das Fenster
int mode;      NORM_COL für Normale Farbdarstellung
	       INV_COL  für Inverse Farbdarstellung
	       FLIP für Umschalten der Farbe 

■ Beschreibung:

Die Funktion set_window_color schaltet die Fensterfarbattribute von 
Normal-darstellung auf Inversdarstellung und zurück. Jedes Fenster 
erbt bei seiner Erzeugung die aktuellen Standardattribute. Soll die 
Ausgabe im Fenster invers dargestellt werden, muss die 
Fensterausgabeattribute mit dieser Funktion umgestellt werden. Alle 
nachfolgenden Ausgaben, die die Fensterattribute benutzen werden 
beeinflußt, jedoch keine bereits bestehenden Ausgaben.

@set_window_manager
int set_window_manager(mode);

■ Parameter:

int mode;    ON schaltet den Windowmanager ein
	     OFF schaltet den Windowmanager aus

■ Beschreibung:

Die Funktion set_window_manager schaltet den Windowmanager aus oder ein. 
Der Windowmanager ist eine Hintergrundfunktion, die es dem Benutzer 
jederzeit erlaubt, alle dynamischen Windows zu manipulieren. 
Wird der Windowmanager ausgeschaltet, so hat das keinen Einfluß auf 
die aktuelle Bildschirmdarstellung.

@set_window_output_attribut
int set_window_output_attribut(win,mode);

■ Parameter:

WINDOW win;    Fensterbezeichner auf das Fenster.
int mode;      Ausgabemodus, MACRO aus kiwi_inc.h
	       STANDARD_ATTRIBUT, FENSTER_ATTRIBUT

■ Beschreibung:

Die Funktion set_window_output_attribut setzt das Ausgabeattribut 
innerhalb des Fensters win entweder auf die Standardwerte, oder auf 
die Attributwerte des Fensters. Bei Erstellung des Fensters win wird 
der aktuelle gültige Attributwert für dieses Fenster übernommen, und 
benutzt. Wird später die aktuelle Attributbelegung geändert, werden 
trotzdem alle Ausgaben innerhalb des Fenster nach wie vor in der 
alten Attributbelegung durchgeführt, bis mit dieser Funktion die 
Attributentnahme geändert wird.

@strip_shadow
int strip_shadow(win);

■ Parameter:

WINDOW win;     Fensterbezeichner auf das Fenster

■ Beschreibung:

Die Funktion strip_shadow löscht den Schatten eines bestehendes 
Fenster win. 

@unlink_virtuell_screen
int unlink_virtuell_screen(win);

■ Parameter:

WINDOW win;   Fensterbezeichner auf das Fenster.

■ Beschreibung:

Die Funktion unlink_virtuell_screen löst die Verbindung eines 
dynamischen Windows mit dem hinterlegten virtuell Screen. Das 
Windows wird zum statischen Window und verliert alle SAA Eigenschaften. 
Der virtuelle Bildschirm wird mit dieser Aktion nicht gelöscht.

@wlocate
void wlocate(win,x,y);

■ Parameter:

WINDOW win;   Fensterbezeichner auf das Fenster.
int x,y;      Bildschirmkoordinaten

■ Beschreibung:

Die Funktion wlocate positioniert den Fenstercursor auf die Position 
x,y. innerhalb des Ausgabefensters win. Ist das Fenster win nicht 
vorhanden, wird die Funktion locate aufgerufen.
Die Koordinaten 1,1 gelten für die oberste linke Bildschirmposition 
innerhalb des Ausgabefensters. Liegt die geforderte Position nicht 
innerhalb des Ausgabefensters, wird der Cursor nicht dargestellt. 

@zoom_window
int zoom_window(win,xa,ya,xe,ye);

■ Parameter:

WINDOW win;      Fensterbezeichner auf das Fenster.
int xa,ya,xe,ye; Neue Koordinaten des Fensters win.
int mode;        Veränderungsmodus des Fensterinhalts.
		 FIX Inhalt bleibt an Position
		 ANPASSEN Inhalt wird mit linker oberer Ecke bewegt.

■ Beschreibung:

Die Funktion zoom_window verändert die Größe des Fensters win. 
Die Eckkoordinaten werden auf die neuen Koordinaten verschoben. 
Der Fensterinhalt wird entweder auf der jeweiligen Position gehalten, 
oder aber entsprechend der Bewegung der linken oberen Ecke verschoben. 
Wenn die neuen Koordinaten eine Überlappung mit den alten Koordinaten 
ergeben, wird die Ausführung verweigert. Ist das Fenster nicht das 
top window, wird es vorher dazu herhoben.

@box
int box(win,xa,ya,xe,ye,typ);

■ Parameter:

WINDOW win;        Fensterbezeichner auf Das Fenster.
int xa,ya,xe,ye;   Eckkoordinaten des Kastens
int typ;           Linientyp des Kasten. MACRO aus kiwi_inc.h.
		   EINFACH erzeugt │ Linientyp.
		   DOPPELT erzeugt ║ Linientyp.

■ Beschreibung:

Die Funktion box erzeugt einen rechteckigen Kasten im Fenster win der 
durch die Eckkordinaten und den Linientyp definiert ist. Ist win=0 
wird der komplette Bildschirm benutzt. Überschreiten die Koordinaten 
die Fenster werden die Linien gekapt. Das Attribut der Linie wird 
den zur Zeit gültigen Attributwerten entnommen. 

@display_array
int display_array(buffer,count,size,x,y);

■ Parameter:

char *buffer;   Zeichenkette in der die Begriffe gespeichert sind
int count;      Anzahl gespeicherter Begriffe
int size;       Breite eines einzelnen Begriffs
int x,y;        Koordinaten der linken oberen Ecke des Auswahlfensters

■ Beschreibung:

Die Funktion display_array ermöglicht die Anzeige verschiedener 
gleichlanger Begriffe oder Objekte in einem Fenster. Die Zeichenkette 
buffer enthält count Begriffe von size Länge. Alle diese Begriffe 
werden in einem Fenster zentral am Bildschirm eingeblendet. Durch 
ESCAPE oder die rechte Maustaste wird der Anzeigevorgang abgebrochen.
Die Größe des Fensters variiert mit der Anzahl der erfassten Dateien. 
An der rechten Fensterseite wird ein kleiner Balken eingeblendet, der 
die Lage der angezeigten Begriffe innerhalb buffer anzeigt.
Die Koordinaten x,y bestimmen die linke obere Ecke des 
Auswahlfensters, es sind aber auch die MACROS AL,AM,AR 
für x und y zugelassen. Diese zentrieren das Fenster am Bildschirm 
entweder Rechtsbündig, Mittig oder Linksbündig, bzw Oben oder Unten.

@display_char
int display_char(ch,anzahl,pos);

■ Parameter:

unsigned char ch;   Auszugebendes Zeichen.
int anzahl;         Anzahl wie oft Zeichen ausgegeben wird
int pos;            Position der ersten Ausgabe. Es sollte die Funktion
		    screen_pos(x,y)verwendet werden, um
		    die Position aus X,Y Koordinaten zu berechnen.

■ Beschreibung:

Die Funktion display_char schreibt ab der Stelle pos, bzw (screen_pos(x,y))  
anzahl Zeichen ch auf den Bildschirm. Bei der Ausgabe wird die zur Zeit 
gültige Attributbelegung für Vorder- und Hintergrund übernommen. 
Diese Funktion benutzt den ganzen Bildschirm, und nicht einzelne Fenster.

@display_char2
int display_char2(ch,anzahl,pos);

■ Parameter:

unsigned short ch;   Auszugebendes Zeichen mit Attribut.
int anzahl;          Angabe wie oft dieses Zeichen ausgegeben werden soll.
int pos;             Position der ersten Ausgabe.

■ Beschreibung:

Die Funktion display_char2 schreibt ab der Stelle pos, bzw 
(screen_pos(x,y))  anzahl Zeichen ch auf den Bildschirm. Im Gegensatz 
zu display_char erwartet display_char2 als Argument ch ein Zeichen 
mit Attribut verknüpft. Dieses kann durch ch=(attribut << 8 ) | character 
erreicht werden. Diese Funktion benutzt den ganzen Bildschirm, 
und nicht einzelne Fenster.
@display_char3
int display_char3(ch,win,x,y);

■ Parameter:

unsigned char ch;  Auszugebendes Zeichen.
WINDOW win;        Fensterbezeichner auf Das Fenster.
int x,y;           Ausgabeposition innerhalb des Fensters

■ Beschreibung:

Die Funktion display_char3 schreibt ab an der Stelle x,y innerhalb 
des Ausgabefenster win, das Zeichen ch auf den Bildschirm. Bei der 
Ausgabe wird die zur Zeit gültige Attributbelegung für Vorder- und 
Hintergrund übernommen. Liegt die Ausgabeposition außerhalb der 
Fenstergrenzen wird der Aufruf ignoriert. Wird win =0 angegeben, 
wird der gesamte Bildschirm als Ausgabefenster benutzt und 
keine Überprüfung auf Überlappende Fenster durchgeführt. 
Diese Funktion arbeitet wie display_char, benutzt aber Bildschirmfenster 
anstatt den Bildschirm.

@display_char4
int display_char4(ch,win,x,y);

■ Parameter:

unsigned short ch;  Auszugebendes Zeichen mit Attribut.
WINDOW win;         Fensterbezeichner auf das Fenster
int x,y;            Ausgabeposition innerhalb des Fensters

■ Beschreibung:

Die Funktion display_char4 schreibt ab an der Stelle x,y innerhalb 
des Ausgabefenster win, das Zeichen ch auf den Bildschirm. Im Gegensatz 
zu display_char3 erwartet display_char4 als Argument ch ein Zeichen 
mit Attribut verknüpft. Liegt die Ausgabeposition außerhalb der 
Fenstergrenzen wird der Aufruf ignoriert. Wird win =0 angegeben, 
wird der gesamte Bildschirm als Ausgabefenster benutzt und keine 
Überprüfung auf Überlappende Fenster durchgeführt. Diese Funktion 
arbeitet wie display_char2 ,benutzt aber Bildschirmfenster zur Ausgabe.

@display_date
int display_date(date,win,x,y);

■ Parameter:

struct DATUM *date;  Auszugebendes Datum;
WINDOW win;          Fensterbezeicher auf das Fenster.
int x,y;             Ausgabeposition innerhalb des Fensters.

■ Beschreibung:

Die Funktion display_date gibt das Datum date innerhalb des Fensters 
win aus. Dabei erfolgt die Angabe der Position relativ zur linken 
oberen Ecke des Fensters. Die Ausgabe erfolgt nur innerhalb des 
angegebenen Fensters, wird also bei Überschreitung abgeschnitten.
Die Struktur DATUM wird in kiwi_inc.h definiert und beschreibt das 
Datum in der Form >tt.mm.jjjj<. Für x kann auch eines der 
Macros AR,AM,AL verwendet werden, um die Ausgabe rechts-, linksbündig 
oder mittig auszuführen.

@message
void message(string);

■ Parameter:

char * string;    Ausgabestring

■ Beschreibung:

Die Funktion message blendet den String string an der unteren 
Bildschirmzeile mittig ein. Die Ausgabe erfolgt direkt auf den 
Bildschirm und nicht in einem Fenster.

@printw
int printw(win,format[,argument]..);

■ Parameter:

WINDOW win;      Fensterbezeichner auf das Ausgabefenster
char *format;    Ausgabeformatkontrolle

■ Beschreibung:

Die Funktion printw ersetzt die Standardfunktion printf für Ausgaben 
in einem Fenster. Dabei ist das Ausgabeformat mit printf identisch, 
lediglich der Fensterbezeichner wird zusätzlich angegeben. Für 
genauere Beschreibung der Funktion siehe in der Funktionsbeschreibung 
printf. Die Ausgabeposition richtet sich nach der Position der 
Fenstercursors, die durch wlocate manipuliert werden kann.
Es werden die zur Zeit gültigen Ausgabeattribute des Fensters bzw 
Bildschirms benutzt.

@set_message_row
void set_message_row(nr);

■ Parameter:

unsigned int nr;Zeile der Ausgabe

■ Beschreibung:

Die Funktion set_message_row setzt die Ausgabezeile für die 
Funktion message fest. Die Funktion message wird z. B. benutzt, 
um Informationen über Menüpunkte auszugeben.

@get_input_status
unsigned char get_input_status();

■ Beschreibung:

Die Funktion get_input_status übergibt das Statusbyte der letzten 
Tastaturbetätigung. In diesem Statusbyte sind die Informationen 
über betätigte Sondertasten gespeichert. Werden beide Shittasten 
gleichzeitig betätigt wird die Betätigung der linken Taste ignoriert.

@get_last_input
unsigned char get_last_input();

■ Beschreibung:

Die Funktion get_last_input liefert den letzten Tastaturanschalg 
nochmal. Dabei wird auch der Statuscode der letzten Eingabe gesetzt.

@input
unsigned char input();

■ Beschreibung:

Die Funktion input ließt Eingaben von der Tastatur ein. Dabei wartet 
Sie nicht, bis eine Eingabe erfolgt ist. Wenn keine Tastatureingabe 
vorliegt gibt Sie 0 zurück, andernfalls den ASCII Code der entsprechenden 
Taste. Ob gleichzeitig Sondertasten, wie Alt,Controll,Shift oder 
Funktionstasten betätigt worden sind, kann über die is_???_key 
Funktionen abgefragt werden. Die Funktion input reagiert nicht auf 
solche Tastatureingabesequenzen, die im Betriebssystem festgelegte 
Funktionen auslösen, wie zum Beispiel ALT+F1 oder ALT+F2, CTRL+ALT+DEL, 
oder nicht definierte Kombinationen wie z.B. ALT+CTRL+Cursorsteuerungen usw.

@is_insert_mode
int is_insert_mode();

■ Beschreibung:

Die Funktion is_insert_mode prüft ob der Einfügemodus aktiv ist 
oder nicht.

@is_???_key
int is_function_key();
int is_alt_key();
int is_control_key();
int is_shift_key();
int is_cursor_key();

■ Beschreibung:

Die Funktionen is_???_key prüfen das Statusbyte der letzten Eingabe 
ob die jeweilige Sondertaste betätigt wurde. Ist dies nicht der 
Fall übergeben alle Funktionen 0 sonst 1. Die Funktion is_shift_key 
ergibt 1 für die rechte und 2 für die linke Shifttaste.

@ungetch_keyboard
void ungetch_keyboard(ch);

■ Parameter:

unsigned char ch;   Tastencode der in die Warteschlange eingefügt wird.

■ Beschreibung:

Die Funktion ungetch_keyboard fügt das Zeichen ch in die 
Tastaturwarteschlange ein. Bei nächtsen Aufruf von input oder 
wait_input wird dieses Zeichen als Tastenanschlag geliefert. Dabei 
wird der aktuelle Tastaturstatuscode geliefert.

@wait_input
unsigned char wait_input();

■ Beschreibung:

Die Funktion wait_input ließt Eingaben von der Tastatur ein. Dabei 
wartet Sie im Gegensatz zu input bis eine Eingabe erfolgt ist. Ob 
gleichzeitig Sondertasten, wie Alt,Controll,Shift, oder Funktionstasten 
betätigt worden sind, kann über die is_???_key Funktionen abgefragt 
werden. Die Funktion wait_input reagiert nicht auf solche 
Tastatureingabe-sequenzen, die im Betriebssystem festgelegte Funktionen 
auslösen, wie zum Beispiel ALT+F1 oder ALT+F2, CTRL+ALT+DEL usw, 
oder die nicht definiert sind wie z.B. ALT+CTRL+Cursorsteuertasten.

@edit_long2
int edit_long2(zahl,win,x,y,len,mod,min,max);

■ Parameter:

long *zahl;     Eingabestring
WINDOW win;     Eingabefenster
int x,y;        Position der ersten Eingabestelle
int len;        Eingabelänge
char *mod;      R,r oder L,l für rechts oder linksbündig
long min,max;   Unter, bzw Obergrenze des Wertes

■ Beschreibung:

Die Funktion edit_long ist die Funktion edit_long mit Prüfung ob 
der Wert die Grenzen nicht verletzt. Die Eingabe gilt einschließlich 
den Grenzen. Wird die Grenze verletzt, wird ein Fenster mit den 
Grenzwerten eingeblendet und der Wert entsprechend angepaßt.

@edit_string
int edit_string(string,win,x,y,len);

■ Parameter:

char *string;   Eingabestring
WINDOW win;     Fensterbezeichner auf das Fenster
int x,y;        Position der ersten Eingabestelle
int len;        Eingabelänge

■ Beschreibung:

Die Funktion edit_string ermöglich die Eingabe einer Zeichenkette 
string innerhalb des Fensters win mit der Länge len. Die Eingabe 
erfolgt an der Position x,y innerhalb des Fenster. Für die Eingabe 
wird der Zeileneditor verwendet, dessen Möglichkeiten bei 
input_string erläutert werden. Als zulässige Werte für x gelten 
auch die MACROS AL,AM,AR für linksbündig,mittig und rechtbündige 
Eingabe innerhalb des Fensters.

@edit_time
int edit_time(time,win,x,y);

■ Parameter:

struct ZEIT *time;    Eingabezeit
WINDOW win;           Fensterbezeichner auf das Fenster
int x,y;              Position der ersten Eingabestelle

■ Beschreibung:

Die Funktion edit_time ermöglich die Eingabe einer Zeit in dem 
Fenster win. Die Eingabe im Format ST:MN:SK:HD erfolgt an der 
Position x,y und ist 12 Zeichen lang. Im Gegensatz zu input_time 
wird die Zeit vorher und nachher am Bildschirm angezeigt. Als 
zulässige Werte für x gelten auch die MACROS AL,AM,AR für 
linksbündig,mittig und rechtbündige Eingabe innerhalb des Fensters.

@init_editor
int init_editor(mode)

■ Parameter:

int mode;   MACRO aus kiwi_inc.h
	    EDIT_ROW Zeilenmodus
	    EDIT_FIELD Feldmodus

■ Beschreibung:

Die Funktion init_editor versetzt den Editor in einen durch mode 
bestimmten Aufruf. Diese Funktion ist ein Sammlung von verschiedenen 
set_edit_mode Funktionsaufrufen. Folgende Aufrufe werden immer 
ausgeführt:

@input_date
int input_date(date,win,x,y);

■ Parameter:

struct DATUM *date;   Eingabedatum
WINDOW win;           Fensterbezeichner auf das Fenster.
int x,y;              Position der ersten Eingabestelle

■ Beschreibung:

Die Funktion input_date ermöglich die Eingabe eines Datums in 
dem Fenster win. Die Eingabe im Format TT.MM.JJJJ erfolgt an der 
Position x,y innerhalb des Fensters und ist 10 Zeichen lang. 
Im Gegensatz zu edit_date wird das Datum vorher nicht am Bildschirm 
angezeigt. Als zulässige Werte für x gelten auch die 
MACROS AL,AM,AR für linksbündig,mittig und rechtbündige 
Eingabe innerhalb des Fensters.

@input_float
int input_float(zahl,win,x,y,len,nk);

■ Parameter:

float *zahl;     Eingabestring
WINDOW win;      Fensterbezeichner auf das Fenster.
int x,y;         Position der ersten Eingabestelle
int len;         Eingabelänge
int nk;          Anzahl der Nachkommastellen

■ Beschreibung:

Die Funktion input_float ermöglich die Eingabe einer Floatzahl 
zahl in dem Fensterstellt win. Die Eingabe erfolgt an der 
Position x,y innerhalb des Fensters und ist len Zeichen lang. 
Die Anzahl der möglichen Nachkommastellen bestimmt nk. Im 
Gegensatz zu edit_float wird die Zahl vorher nicht am Bildschirm 
gezeigt. Als zulässige Werte für x gelten auch die 
MACROS AL,AM,AR für linksbündig,mittig und rechtbündige Eingabe.

@input_int
int input_int(zahl,win,x,y,len);

■ Parameter:

int *zahl;    Eingabestring
WINDOW win;   Fensterbezeichner auf das Fenster.
int x,y;      Position der ersten Eingabestelle
int len;      Eingabelänge

■ Beschreibung:

Die Funktion input_int ermöglich die Eingabe einer Integerzahl 
zahl in dem Fenster win. Die Eingabe erfolgt an der Position x,y 
innerhalb des Fensters und ist len Zeichen lang. Im Gegensatz zu 
edit_long wird die Zahl vorher nicht am Bildschirm gezeigt.
Als zulässige Werte für x gelten auch die MACROS AL,AM,AR 
für linksbündig,mittig und rechtbündige Eingabe innerhalb 
des Fensters.

@input_long
int input_long(zahl,win,x,y,len);

■ Parameter:

long *zahl;   Eingabestring
WINDOW win;   Fensterbezeichner auf das Fenster.
int x,y;      Position der ersten Eingabestelle
int len;      Eingabelänge

■ Beschreibung:

Die Funktion input_long ermöglich die Eingabe einer Long 
Integerzahl zahl in dem Fenster win. Die Eingabe erfolgt an der 
Position x,y innerhalb des Fensters und ist len Zeichen lang. 
Im Gegensatz zu edit_long wird die Zahl vorher nicht am Bildschirm 
gezeigt. Als zulässige Werte für x gelten auch die 
MACROS AL,AM,AR für linksbündig,mittig und rechtbündige 
Eingabe innerhalb des Fensters.

@input_string
int input_string(string,win,x,y,len);

■ Parameter:

char *string;    Eingabestring
WINDOW win;      Fensterbezeichner auf das Fenster.
int x,y;         Position der ersten Eingabestelle
int len;         Eingabelänge

■ Beschreibung:

Die Funktion input_string stellt den Zeileneditor des Toolpakets 
dar. Dieser Editor ermöglich die freie Eingabe beliebiger Zeichen 
in einer Zeile von durch len bestimmter Länge. In Grenzen ist sein 
Verhalten auch von außen steuerbar. Innerhalb der Eingabe kann 
mittels der Cursortasten der Eingabecursor beliebig nach links 
und rechts verschoben werden. Eingaben können an allen Positionen 
innerhalb des Eingabefelds gemacht werden. Ist die INSERT Funktion 
aktiv wird der Cursor als Block dargestellt und der rechts der 
Eingabe liegende Text nach rechts verschoben, sonst ist der Cursor 
als Strich zu sehen und der Text wird überschrieben.
Im Gegensatz zu edit_string zeigt diese Funktion den String nicht 
vorher auf dem Bildschirm an.

@input_time
int input_time(time,win,x,y);

■ Parameter:

struct ZEIT *time;   Eingabezeit
WINDOW win;          Fensterbezeichner auf das Fenster
int x,y;             Position der ersten Eingabestelle

■ Beschreibung:

Die Funktion input_time ermöglich die Eingabe einer Zeit in dem 
Fenster win. Die Eingabe im Format ST:MN:SK:HD erfolgt an der 
Position x,y innerhalb des Fensters und ist 12 Zeichen lang. 
Im Gegensatz zu edit_time wird die Zeit vorher nicht am Bildschirm 
angezeigt. Als zulässige Werte für x gelten auch die 
MACROS AL,AM,AR für linksbündig,mittig und rechtbündige Eingabe 
innerhalb des Fensters.

@set_edit_mode
int set_edit_mode(MODE);

■ Parameter:

int MODE;     MACRO aus kiwi_inc.h. Siehe Liste unten

■ Beschreibung:

Die Funktion set_edit_mode beeinflußt das Verhalten des Zeileneditors, 
der in allen Eingabefunktionen verwendet wird.

@array_get_files
int array_get_files(name,key);

■ Parameter:

char *name;   Zeichenkette in der der ausgewählte name übergeben wird.
char *key;    Zeichenkette mit Zugriffspfad und des Zugriffsschlüssel

■ Beschreibung:

Die Funktion array_get_files ermöglicht die Auswahl einer bestimmten 
Datei über ein Auswahlfenster. Die Zeichenkette key enthält den 
Zugriffspfad un den Zugriffschlüssel in der von DOS bekannten Notation. 
Dabei sind alle Joker und Wildcards zugelassen. Zum Beispiel würde 
der String key="c:/word/texte/*.txt" alle Dateien erfassen, die unter 
dem Verzeichnis c:\c\word\texte verzeichet sind und die Endung .txt 
besitzen. Ist der Schlüssel unvollständig, z.b.:"c:/word/texte" wird 
der automatisch mit /*:* erweitert. Alle diese Dateien werden erfasst, 
sortiert und in einem Fenster zentral am Bildschirm eingeblendet. Der 
Benutzer kann nun mittels des Mauszeigers oder der Cursortasten einen 
Leuchtbalken auf die gewünschte Datei bewegen. Durch RETURN oder 
Linke Maustaste wird die Auswahl abgeschlossen. Der ausgewählte 
Dateiname wird in die Zeichenkette name kopiert. Diese Zeichenkette muß 
mindestens 13 Zeichen besitzen, welches aber nicht abgeprüft wird. 
Durch ESCAPE oder eine andere Maustaste wird der Auswahlvorgang 
abgebrochen. Die Größe des Fensters variiert mit der Anzahl der 
erfassten Dateien.

@browse_array
int browse_array(buffer,count,size,x,y,max);

■ Parameter:

char *buffer;  Zeichenkette in der die Begriffe gespeichert sind
int count;     Anzahl gespeicherter Begriffe
int size;      Breite eines einzelnen Begriffs
int x,y;       Koordinaten der linken oberen Ecke des Auswahlfensters
int max;       Maximale Anzahl Begriffe gleichzeitig anzuzeigen.

■ Beschreibung:

Die Funktion browse_array ermöglicht die Auswahl eines bestimmten 
Begriffs oder Objekts über ein Auswahlfenster. Die Zeichenkette buffer 
enthält count Begriffe von size Länge. Alle diese Begriffe werden 
in einem Fenster in einer Reihe am Bildschirm eingeblendet. Der 
Benutzer kann nun mittels des Mauszeigers oder der Cursortasten einen 
Leuchtbalken auf den gewünschten Begriff bewegen. Durch RETURN oder 
Linke Maustaste wird die Auswahl abgeschlossen. Durch ESCAPE oder 
eine andere Maustaste wird der Auswahlvorgang abgebrochen. Die Größe 
des Fensters ist abhängig von size und max. Der Fensterinhalt kann 
mit den Pfeilen rechts ,durch betätigen von SHIFT + Cursor UP 
bzw Cursor DOWN oder durch Anfahren mit der Maus gescrollt werden. 
Ein kleiner Querbalken an der rechten Fensterseite zeigt die 
Position innerhalb des Feldes.

@browse_get_files
int browse_get_files(name,key);

■ Parameter:

char *name;   Gewählte Datei
char *key;    Zugriffspfad mit Zugriffsschlüssel

■ Beschreibung:

Die Funktion browse_get_files ermöglicht die Auswahl einer bestimmten 
Datei über ein Auswahlfenster. Die Zeichenkette key enthält den 
Zugriffspfad un den Zugriffschlüssel in der von DOS bekannten Notation. 
Dabei sind alle Joker und Wildcards zugelassen.
Ist der Zugriffsschlüssel unvollständig, so wird er mit /*.* erweitert.
Diese Funktion benutzt zur Auswahl der Dateien die Funktion 
browse_array anstatt wie bei array_get_files die Funktion choose_array. 
Dadurch werden die Dateinamen nicht in einem zweidimensionalen Feld 
augelistet, sondern in einer Reihe übereinander.

@choose_button
int choose_button(header,menu,count,x,y);

■ Parameter:

char *header;   Auswahlüberschrift
MENU menu[];    Menufeld in dem die Menu- und Auswahlinformationen 
		gespeichert sind
int count;      Anzahl verfügbarer Menuauswahlpunkte
int x,y;        Koordinaten der linken oberen Ecke des Auswahlfensters

■ Beschreibung:

Die Funktion choose_button ermöglicht die Auswahl mehrerer Elemente 
eines Menüs. Diese Menüpunkte werden untereinander dargestellt 
und rechts davon jeweils ein Schalter. Ist ein Schalter betätigt 
und inaktiv, wird ein Kreuz erscheinen, der Begriff ist aktiv. 
Einen Schalter kann man mittels der Maus oder der Returntaste oder 
der Schlüsseltaste der Menüposition betätigen. Die Returntaste 
schaltet den Schalter, auf den der Cursor zeigt. Betätigen eines 
hervorgehobenen Buchstabens schaltet ebenfalls den jeweiligen Schalter. 
Die Auswahl wird mit Anfahren der Ok Taste oder durch betätigen 
von O beendet. Die entsprechenden Daten werden durch den Datentyp 
MENU bereitgehalten. Die Abfrage ob ein Menüpunkt aktiv oder 
inaktiv ist erfolgt durch den Wert menu[x].aktiv. Die Koordinaten 
x,y bestimmen die linke obere Ecke des Auswahlfensters, es sind 
aber auch die MACROS AL,AM,AR für x und y zugelassen.

@choose_main_menu
int choose_main_menu();

■ Beschreibung:

Die Funktion choose_main_menu  ermöglich die Anwahl einer der 
Hauptmenupositionen. Die Anwahl kann durch Betätigen der Alt Taste und 
des zur Menüposition gehörenden Buchstabens, oder durch Anwählen 
mit der Maus erfolgen. Bei Anwahl mit der Maus hängt die Reaktion 
von der mittels set_menu erfolgten Konfiguration ab. 
Bei POP-UP genügt bereits ein Anfahren in den Positionsbereich, 
bei PULL-DOWN muß der Mauszeiger in den Bereich gefahren und die 
linke Maustaste betätigt und gehalten werden, bei DOPPELKLICK muß 
angefahren, geklickt und wieder gelöst werden. Die Position des 
jeweiligen Untermenüs wird automatisch ermittelt, ebenso die 
Größe des zugehörigen Fensters.

@choose_menu
int choose_menu(menu,count,x,y,win);

■ Parameter:

MENU[] menu;    Menüfeld
int count;      Anzahl Menüpositionen
int x,y;        Koordinatenposition der linken oberen des Fensters
WINDOW *win;    Menüausgabefenster

■ Beschreibung:

Die Funktion choose_menu ermöglich die Anwahl einer Option aus einer 
Auswahl, die innerhalb eines Fenster dargestellt werden. Die Darstellung 
ist der der Submenüs angepasst, kann aber ohne Menuleiste benutzt werden.
Die Position wird durch x,y angegeben, wenn aber vorher set_menu(NACH_MAUS) 
aufgerufen wurde, wird die Position des Eingabefenster an die aktuelle 
Mauszeigerposition angepaßt. Die Anwahl kann durch Betätigen der 
Alt Taste und des zur Menüposition gehörenden Buchstabens, oder 
durch Anwählen mit der Maus erfolgen. Bei Anwahl mit der Maus wird 
die gewünschte Position mit dem Mauscursor angefahren und durch 
Anklicken der linken Taste angewählt. Das Ausgabefenster 
wird(wenn mit set_menu(BEHALT_WIN) eingestellt) in win übergeben, 
so das es später gelöscht werden kann. Die Variable win sollte vor 
dem ersten Aufruf -1 gesetzt werden, da diese Funktion nur ein Fenster 
öffnet wenn die Variable <=0 ist. Dadurch kann die Funktion in einer 
Schleife laufen, ohne Fensterflackern. Bei Betätigen der Escapetaste 
oder Klicken ausserhalb des Fensterbereichs wird -1 übergeben, 
sonst die Nummer der Menuposition.

@choose_sub_menu
int choose_sub_menu(submenu,subcount,win);

■ Parameter:

MENU[] submenu;  Menüfeld
int subcount;    Anzahl Menüpositionen
WINDOW *win;     Menüausgabefenster

■ Beschreibung:

Die Funktion choose_sub_menu  ermöglich die Anwahl eines der 
Untermenüoptionen nach Anwahl eines Hauptmenüpunktes. Positionen 
der Submenüs werden automatisch bestimmt. Die Anwahl kann durch 
Betätigen der Alt Taste und des zur Menüposition gehörenden 
Buchstabens, oder durch Anwählen mit der Maus erfolgen.
Bei Anwahl mit der Maus hängt die Reaktion von der mittels 
set_menu erfolgten Konfiguration ab. Bei POP-UP wird die 
gewünschte Position mit dem Mauscursor angefahren und durch 
Anklicken der linken Taste angewählt. Bei PULL-DOWN und DOPPELKLICK 
ist die linke Maustaste noch gedrückt. Die Position wird angefahren 
und die Mausstaste losgelassen. Das Ausgabefenster wird je nach 
Konfiguration bei Verlassen der Funktion gelöscht oder in 
win übergeben, so das es später gelöscht werden kann.
Die Variable win sollte vor dem ersten Aufruf -1 gesetzt werden, 
da diese Funktion nur ein Fenster öffnet wenn die Variable <=0 ist. 
Dadurch kann die Funktion in einer Schleife laufen, ohne Fensterflackern.
Bei Betätigen der Escapetaste oder Klicken ausserhalb des 
Fensterbereichs wird -1 übergebn, sonst die Nummer der Menuposition.

@dialog
int dialog(string,x,y);

■ Parameter:

char *string;   Hinweistext des Dialogs
int x,y;        Koordinaten der linken oberen Ecke des Dialogfensters

■ Beschreibung:

Die Funktion dialog ermöglich die Abfrage einer Entscheidung durch den 
Benutzer. Ein Dialogfenster wird eingeblendet, in dem der Hilfetext 
im oberen Teil eingeblendet wird. Der Hilfetext kann beliebig lang sein 
und wird durch das Zeilenvorschubzeichen \n in einzelen Zeilen unterteilt.
Im unteren Teil sind zwei Knöpfe, für Ja oder Nein untergebracht. 
Der Benutzer führt die Entscheidung entweder durch die Tasten 
J,j oder N,n oder durch anfahren der Knöpfe mit dem Mauszeiger 
und durch Betätigen der linken Maustaste herbei. Die Einstellung 
mit set_menu(NACH_MAUS) ist auch hier wirksam, das heißt in diesem 
Fall wird die Position der linken oberen Ecke von der aktuellen 
Position des Mauszeiger abhängig gemacht.

@init_main_menu
int init_main_menu(menu_leiste,anzahl);

■ Parameter:

MENU menu_leiste[];  Struct Feld vom Typ MENU
		     Dieses Feld beinhaltet die not wendigen Informationen
int anzahl;          Anzahl Menupunkte

■ Beschreibung:

Die Funktion init_main_menu initialisiert das Menusystem mit Menüleiste 
und POP-UP oder PULL-Down Menüs. Dazu wird das Feld menu_leiste 
initialisiert. 

@roll_bar
double roll_bar(string,value,min,max,step,size,x,y);

■ Parameter:

char *string;         Hinweistext des Rollbalkens
double int value;     Eingabewert 
double int min,max;   Unter- bzw Obergrenze des Werts
double int step;      Schrittweite der Änderung
int size;             Breite des Rollbalkens (min 30)
int x,y;              Koordinaten der linken oberen Ecke des Dialogfensters

■ Beschreibung:

Die Funktion roll_bar emuliert einen Schieberegler um eine Floatzahl value 
einzugeben. Dazu wird der Bereich von min bis max als Schiebestrecke am 
Bildschirm angezeigt. Der momentane Wert von value wird durch die Angabe 
des Reglers proportional zum Wert angezeigt. Links und rechts der 
Schiebestrecke befinden sich Pfeile. Durch Anfahren der Maus auf einen 
Pfeil und Betätigen der linken Maustaste wird der Wert um step verändert. 
Durch die Tasten Cursor links und rechts wird der gleiche Effekt erzielt. 
Durch betätigen von Home oder End wird der Wert auf min oder max gesetzt. 
Durch PgDn oder PGUp wird der Wert um das 10 fache von step verändert.
Durch Anfahren von OK oder Eingabe von o,O, Return wird der geänderte 
Wert übergeben, durch ESC, n,N, Esc Taste der Eingangswert.

@set_menu
int set_menu(mode);

■ Parameter:

int mode;      MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_menu steuert die Art der Menuerfassung der 
Funktionen choose_main_menu, choose_sub_menu, choose_menu.

Zur Verfügung stehende Funktionen sind:

EINFACH         Rahmenart der Eingabefenster ─
DOPPELT         Rahmenart der Eingabefenster ═
PULL_DOWN       Behandele Menü wie Pull Down Menüs
POP_UP          Behandele Menu wie Pop Up Menüs
DOPPELKLICK     Klicke Zweimal zur Auswahl
BEHALT_WIN      Behalte Eingabefenster bei exit
LOESCH_WIN      Lösche Eingabefenster bei exit
FESTGELEGT      Positioniere Menüfenster auf Werte
NACH_MAUS       Positioniere Menüfenster nach Mauszeiger
COMMENT         Kommentare werden ausgegeben
NO_COMMENT      Kommentare werden nicht ausgegeben(Vorgabe)
NUR_MENU        Hauptmenü wartet bis Auswahl getroffen(Vorgabe)
AUCH_MENU       Hauptmenü prüft ob Auswahl anliegt, wenn nicht weiter

@browse_help
int browse_help();

■ Beschreibung:

Die Funktion browse_help ermöglich das Durchblättern der Hilfetextdatei 
nach Stichworten. Diese Stichworte, nach denen der entsprechende Text 
referenziert wird, werden in einer Reihe am Bildschirm in einem Fenster 
ausgegeben. Der Anwender sucht sich die entsprechende Information aus und 
bekommt den zugehörigen Text am Bildschirm angezeigt. Eine zweite 
Möglichkeit besteht in der Eingabe eines Begriffs, nach dem der Inhalt 
der Stichworte durchsucht wird. Bei Übereinstimmung wird der entsprechende 
Text am Bildschirm angezeigt. Die Eingabe des Begriffs ist nicht von 
Groß- oder Kleinschreibung abhängig.

@check_if_get_help
void check_if_get_help();

■ Beschreibung:

Die Funktion check_if_get_help wird von input aufgefufen, wenn die 
Hilfetaste aktiviert wurde. Diese Funktion ist im Sourcecode und 
macht nicht anderes als die Funktion get_help aufzurufen wenn die 
Hilfe eingebunden werden soll. Wenn ein Programm ohne Hilfefunktion 
erstellt werden soll, wird der Aufruf get_help entfernt, neu compiliert 
und der gesamte Hilfecode wird nicht mit eingebunden, was den 
Speicherbedarf um etwa 25 KB reduziert. Es können auch zwei getrennt 
Objektmodule erstellt werden, die dann bedarfsabhängig eingebunden werden.

@create_error
int create_error(name);

■ Parameter:

char *name;    Aktueller Suchbegriff

■ Beschreibung:

Die Funktion create_error erzeugt eine Fehlermeldung, mit dem Text 
für Eintrag name. Wenn direkt ein Fehler erzeugt werden soll, 
kann diese Funktion benutzt werden. Diese setzt den Suchbegriff 
auf name und ruft dann den Fehlertext ab.

@get_help
int get_help();

■ Beschreibung:

Die Funktion get_help aktiviert die Hilfefunktion. Nach Aufruf wird 
die Textdatei nach dem aktuellen Suchbegriff, der als letztes mit 
der Funktion set_help_name gesetzt wurde, durchsucht. Wenn Informationen 
gefunden werden, so wird der zugehörige Text am Bildschirm eingeblendet. 
Ist der Text länger als das Bildschirmfenster so kann im Text 
geblättert werden. Je nach Einstellung der Hilfe warte diese Funktion 
auf eine Aktion (Tastendruck oder Mausklick) und löscht das Fenster 
wieder oder kehrt direkt zurück. Ist die Option BEHALT_WIN mit 
set_help gesetzt worden, so kann das Bildschirmfenster mit 
get_last_window referenziert werden.

@init_error
int init_error(name);

■ Parameter:

char *name;    Datenpfadbeschreibung der Hilfetextdatei

■ Beschreibung:

Die Funktion init_error initialisiert das Fehlermeldungssystem. 
Die Textdatei name muß den Anhang .ERR besitzen der aber nicht 
angegeben werden darf. Diese Datei wird eröffnet, die zugehörige 
Indexdatei wird auf Aktualität überprüft  und gegebenenfalls 
neu erstellt, so das der Index immer auf dem neuesten Stand ist. 
Beide Dateien werden dann eröffnet und für den Zugriff vorbereitet.

@init_help
int init_help(name);

■ Parameter:

char *name;    Datenpfadbeschreibung der Hilfetextdatei

■ Beschreibung:

Die Funktion init_help initialisiert das Hilfesystem. Die Textdatei 
name muß den Anhang .HLP besitzen der aber nicht angegeben werden darf. 
Diese Datei wird eröffnet, die zugehörige Indexdatei wird auf 
Aktualität überprüft  und gegebenenfalls neu erstellt, so das der 
Index immer auf dem neuesten Stand ist. Beide Dateien werden dann 
eröffnet und für den Zugriff vorbereitet.
Informationen über die Formate der Textdateien entnehmen Sie bitte 
der Einleitung.

@set_error
int set_error(mode);

■ Parameter:

int mode;    MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_error verändert das Verhalten des Errormessagesystems 
in bestimmten Grenzen abhängig von mode.

@set_error_color
void set_error_color(attrib,inv_attrib);

■ Parameter:

int attrib,inv_attrib;    Attributwerte des Errormessagefensters

■ Beschreibung:

Die Funktion set_error_color setzt die Farbe des Fehlermeldungsfensters 
auf attrib und inv_attrib. Standardmäßig ist die Farbe auf Invers der 
Farbtabelle bei Aufruf von init_help gesetzt.

@set_error_name
void set_error_name(name);

■ Parameter:

char *name;   Aktueller Suchbegriff

■ Beschreibung:

Die Funktion set_error_name setzt den Begriff name als aktueller 
Suchbegriff fest. Nach diesem Aufruf wird an jeder beliebigen Stelle, 
wenn die Funktion get_error aufgerufen worden ist, die Textdatei nach 
dem Begriff name durchsucht, und wenn gefunden wird der zugehörige 
Fehlermeldungstext am Bildschirm eingeblendet.
Wenn der Begriff nicht gefunden wird, wird eine Meldung angezeigt, 
das leider kein Hinweis verfügbar ist.

@set_error_pos
void set_error_pos(x,y);

■ Parameter:

int x,y;  Koordinaten der linken oberen Ecke des Errormessagefensters

■ Beschreibung:

Die Funktion set_error_pos setzt die Position des Errormessagefensters 
auf x,y der oberen linken Ecke. Standardmäßig ist die Position auf 
Bildschirmmitte gesetzt. Es können auch die MACROS AM,AL,AR für x oder y 
verwendet werden.

@set_help
int set_help(mode);

■ Parameter:

int mode;    MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_help verändert das Verhalten des Hilfesystems in 
bestimmten Grenzen abhängig von mode.

@set_help_color
void set_help_color(attrib,inv_attrib);

■ Parameter:

int attrib,inv_attrib;   Attributwerte des Errormessagefensters

■ Beschreibung:

Die Funktion set_help_color setzt die Farbe des Hilfefensters auf 
attrib und inv_attrib. Standardmäßig ist die Farbe auf Invers der 
Farbtabelle bei Aufruf init_help gesetzt.

@set_help_mask
void set_help_mask(mode);

■ Parameter:

unsigned short mode;   Tastenkombination die zum Auslösen 
		       der Hilfefunktion führt.

■ Beschreibung:

Die Funktion set_help_mask setzt die gültige Tastenkombination fest, 
die zum Aufruf der Case Sensitiv Help führt. Alle gültigen 
Tasten und Tastenkombination mit Alt, Funktions und Controltasten 
können gewählt werden. Dazu muß das "obere" Byte von mode auf den 
input_status und das "untere" Byte auf den Tastencode gesetzt werden.

@set_help_name
void set_help_name(name);

■ Parameter:

char *name;    Aktueller Suchbegriff

■ Beschreibung:

Die Funktion set_help_name setzt den Begriff name als aktueller 
Suchbegriff fest. Nach diesem Aufruf wird an jeder beliebigen Stelle, 
wenn die Funktion get_help aufgerufen worden ist, die Textdatei nach 
dem Begriff name durchsucht, und wenn gefunden wird der zugehörige 
Hilfetext am Bildschirm eingeblendet. Wenn der Begriff nicht gefunden 
wird, wird eine Meldung angezeigt, das leider keine Hilfe verfügbar ist.

@set_help_pos
void set_help_pos(x,y);

■ Parameter:

int x,y;Koordinaten der linken oberen Ecke des Hilfefensters

■ Beschreibung:

Die Funktion set_help_pos setzt die Position des Hilfefensters auf x,y 
der oberen linken Ecke. Standardmäßig ist die Position auf 
Bildschirmmitte gesetzt. Es können auch die MACROS AM,AL,AR für x 
oder y verwendet werden.

@reset_error
void reset_error();

■ Beschreibung:

Die Funktion reset_error schließt die beiden zum Errormessagesystem 
gehörenden Dateien. Wenn während des Programmablaufs ein Wechsel 
der Textdateien notwendig werden sollte muß vor Aufruf von init_error 
das alte System mit reset_error abgeschlossen worden sein. Diese 
Funktion sollte in reset_tools eingebunden werden.

@reset_help
void reset_help();

■ Beschreibung:

Die Funktion reset_help schließt die beiden zum Hilfesystem 
gehörenden Dateien. Wenn während des Programmablaufs ein 
Wechsel der Textdateien notwendig werden sollte muß vor Aufruf 
von init_help das alte System mit reset_help abgeschlossen worden sein.
Diese Funktion sollte in reset_tools eingebunden werden.

@check_printer_status
unsigned char check_printer_status(nr);

■ Parameter:

int nr;    Nummer des Druckers 

■ Beschreibung:

Die Funktion check_printer_status überprüft den Status des Druckers 
nr und übergibt ein Statusbyte. Der als PRN angeschlossene Drucker 
hat die Nummer 0.
Ist eines der ersten drei Bytes gesetzt, ist der Drucker nicht 
betriebsbereit.

@feed_printer
void feed_printer(anzahl);

■ Parameter:

int anzahl;   Anzahl Zeichen zum Vorschieben

■ Beschreibung:

Die Funktion feed_printer verschiebt den Druckkopf um anzahl 
Zeichen nach rechts.

@flush_printer
void flush_printer();

■ Beschreibung:

Die Funktion flush_printer leert den Druckpuffer des Ausgabekanals. 
Alle noch gepufferten Zeichen werden auf den Ausgabekanal ausgegeben.

@init_printer
int init_printer(pfad);

■ Parameter:

char *pfad;   Dateipfad für Druckersteuerung

■ Beschreibung:

Die Funktion init_printer verbindet den internen Druckausgabekanal 
mit dem Standarddruckerstream stdprn. Diese Funktion muß vor 
jeglicher Druckausgabe aufgerufen werden. Beim Aufruf wird versucht 
eine Datei pfad zu laden, in der Informationen über die 
Möglichkeiten und Steuersequenzen des angeschlossenen Druckers 
enthalten sind. Wenn diese Datei nicht geladen werden kann, 
kommen die Voreinstellung zur Geltung, die für einen NEC P6,7 PLUS 
bestimmt sind. 

@link_printer
int link_printer(stream);

■ Parameter:

FILE *stream;   Ausgabedatei

■ Beschreibung:

Die Funktion link_printer verbindet den internen Druckausgabekanal 
zusäztlich mit der angegebenen Datei stream. Damit kann die 
gesamte Druckausgabe auf eine Datei, oder auf einen zweiten Drucker  
umgeleitet werden, während der erste Drucker ebenfalls angesteuert 
wird. Dieser Befehl hat keinen Einfluß auf die angewählten 
Druckertreiberinformationen.

@print_char
int print_char(ch,anzahl);

■ Parameter:

unsigned char ch;  Zeichen zum Drucken
int anzahl;        Anzahl Zeichen die gedruckt werden sollen.

■ Beschreibung:

Die Funktion print_char gibt anzahl Zeichen ch auf den 
Druckausgabekanal aus.

@print_date
int print_date(date);

■ Parameter:

struct DATUM *date;   Zeiger auf Datum

■ Beschreibung:

Die Funktion print_date gibt den Inhalt des Datums date auf den 
Druckausgabekanal in dem Format >dd.mm.jjjj< aus.

@print_float
int print_float(number,len,nk);

■ Parameter:

double number;   Zahl zum Drucken
int len;         Anzahl Zeichen der Zahl
int nk;          Anzahl Nachkommastellen

■ Beschreibung:

Die Funktion print_float gibt die Zahl number mit len Zeichen 
und nk Nachkommastellen rechtsbündig auf dem Druckausgabekanal aus.

@print_time
int print_time(time,mod);

■ Parameter:

struct ZEIT *time;    Zeiger auf Zeit
char *mod;            h Stunden, m Minuten s Sekunden z Hunderstel

■ Beschreibung:

Die Funktion print_time gibt den Inhalt der Zeit time auf den 
Druckausgabekanal in von mod abhängigen Format.

@printp
int printp(maske[,argument]..);

■ Parameter:

char *maske;      Formatmaske

■ Beschreibung:

Die Funktion printp ersetzt die Standardfunktion printf für 
Ausgaben auf den Druckausgabekanal. Die Befehlssyntax ist 
identisch mit printf, siehe also dort für weiter Informationen.

@set_default_modes
void set_default_modes();

■ Beschreibung:

Die Funktion set_default_modes aktiviert die voreingestellten 
Druckerinformationen. Die Voreinstellung sind für einen normalen 
Nadeldrucker wie NEC P6. Druckerinformationen von vorherigen Aufrufen 
werden durch diesen Aufruf gelöscht.

@set_default_printer_status
void set_default_printer_status();

■ Beschreibung:

Die Funktion set_default_printer_status setzt die Druckausgabekanäle 
wieder auf ihre Standardwerte. Das heißt für MS-DOS Kanal 1 an stprn 
und Kanal zwei abschalten. Diese Kanäle sind standardmäßig Voreingestellt 
und brauchen nur bei Umleitung wieder zurückgestellt werden.

@redirect_printer
int redirect_printer(stream);

■ Parameter:

FILE *stream;   Ausgabedatei

■ Beschreibung:

Die Funktion redirect_printer leitet den internen Druckausgabekanal 
auf die Datei stream. Damit kann die gesamte Druckausgabe auf eine 
Datei umgeleitet werden, oder aber auch auf einen anderen 
Ausgabedrucker. Dieser Befehl hat keinen Einfluß auf die 
angewählten Drucktreiberinformationen.

@unlink_printer
int unlink_printer();

■ Beschreibung:

Die Funktion unlink_printer unterbricht die Verbindung des 
Druckausgabekanal mit dem zweiten angegeben Kanal.

@empty_mouse
void empty_mouse();

■ Beschreibung:

Die Funktion empty_mouse leert den Maustastenpuffer solange, 
bis der keine Maustastedruck mehr anliegt. Dann erst wird der 
Programmablauf weitergegeben.

@get_last_mouse_pos
void get_last_mouse_pos(x,y);

■ Parameter:

unsigned int *x,*y;    Mauskoordinaten

■ Beschreibung:

Die Funktion get_last_mouse_pos übergibt die Mauskoordinaten bei 
dem letzten Aufruf von mouse oder mouse_trap.

@limit_mouse_area
int limit_mouse_area(xa,ya,xe,ye);

■ Parameter:

int xa,ya,xe,ye;  Eckkoordinaten des erlaubten Bereichs

■ Beschreibung:

Die Funktion limit_mouse_area limitiert die Mausbewegungen auf 
den angegebenen Bereich. Danach ist eine Bewegung des Mauscursors 
nur noch in dem definierten Rechteck möglich. Alle außerhalb 
liegenden Mauskoordinaten werden in das Rechteck umgewandelt. 
Wenn der Bildschirm in einem erweiterten Modus laufen soll, 
ist es eventuell notwendig, die Grenzen der Mausbewegung anzupassen.

@mouse
int mouse(x,y);

■ Parameter:

unsigned int *x,*y;    Aktuelle Mauskoordinaten

■ Beschreibung:

Die Funktion mouse ermöglich die Kontrolle über die Mausbewegungen 
und Maustasten. Die Koordinaten x,y entsprechen den zum Aufruf 
gültigen Mauspositionskoordinaten, entsprechend den 
Bildschirmkonventionen im Fenstersystem.

@mouse_cursor
int mouse_cursor(mode);

■ Parameter:

int mode;    MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion mouse_cursor schaltet den Mauscursor je nach mode an 
oder ab, oder übergibt den aktuellen Mauscursorstatus, das heißt 
ob dieser ein- oder ausgeschaltet ist.

@mouse_trap
int mouse_trap(xa,ya,xe,ye);

■ Parameter:

int xa,ya,xe,ye;   Eckkoordinaten des Rechtecks, 
		   innerhalb dessen der Mauscursor "gefangen" wird.

■ Beschreibung:

Die Funktion mouse_trap checkt die Mauscursorposition und meldet 
wenn der Mauscursor sich in dem durch die Eckkoordinaten 
beschriebenen Rechtecks befindet und eine Maustaste betätigt wurde. 
Das Rechteck gilt einschließlich der Koordinaten. Das 
Rechteck 2,2,2,2 z.B. beschreibt die Position 2,2.

@reset_mouse
void reset_mouse();

■ Beschreibung:

Die Funktion reset_mouse beendet die Mausbenutzung und schaltet 
diese komplett ab. Dabei wird der Mauscursor, sofern eingeblendet 
ebenfalls abgeschaltet. Diese Funktion sollte in reset_tools 
enthalten sein.

@set_mouse
int set_mouse(mode);

■ Parameter:

int mode;    MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_mouse schaltet die Mausbenutzung je nach mode 
an oder ab, oder übergibt den aktuellen Mausstatus, das 
heißt ein- oder ausgeschaltet. Im Gegensatz zu reset_mouse wird 
die Maus nicht gänzlich abgeschaltet, sondern nur temporär.

@set_mouse_cursor_shape
int set_mouse_cursor_shape(start,end);

■ Parameter:

int start;   Startzeile des Cursor
int end;     Endzeile des Cursors

■ Beschreibung:

Die Funktion set_mouse_cursor_shape setzt den Mauscursor auf 
die Größe von Startzeile bis Endzeile. Bei Monochrom geht die 
Zeilennumerierung von 0-13, bei Farbadaptern geht er von 0-7. 
Dabei wird der Cursor auf Hardwarecursor umgeschaltet.

@set_mouse_cursor_size
int set_mouse_cursor_size(mode);

■ Parameter:

int mode;   MACRO aus kiwi_inc.h

■ Beschreibung:

Die Funktion set_mouse_cursor_size setzt den Mauscursor 
auf die Form mode.

@set_mouse_pos
int set_mouse_pos(x,y);

■ Parameter:

unsigned int x,y;    Die gewünschten Mauskoordinaten

■ Beschreibung:

Die Funktion set_mouse_pos setzt den Mauscursor an die gewünschte 
Position. Dabei wird keine Überprüfung bezüglich der 
Bildschirmgrenzen durchgeführt.

@add_time
unsigned long add_time(sum,time1,time2);

■ Parameter:

struct ZEIT *sum,*time1,   sum ist Zeitsumme, time1 ist erste, 
	    *time2;        time2 die zweite Zeit.

■ Beschreibung:

Die Funktion add_time addiert die Zeiten von time1 und time2 und 
speichert die Summe in sum. 

@compare_date
int compare_date(date1,date2);

■ Parameter:

struct DATUM *date1;   Das 1 Datum
struct DATUM *date2;   Das 2 Datum

■ Beschreibung:

Die Funktion compare_date vergleicht zwei Datumsangaben darauf 
welche von beiden jüngeren Ursprungs ist.

@compare_time
int compare_time(time1,time2);

■ Parameter:

struct ZEIT *time1;   Die 1 Zeit
struct ZEIT *time2;   Die 2 Zeit

■ Beschreibung:

Die Funktion compare_time vergleicht zwei Zeitangaben darauf 
welche jüngeren Ursprungs ist.

@copy_date
void copy_date(date1,date2);

■ Parameter:

struct DATUM *date1,*date2;   Zeiger auf Datumsstrukturen die
			      kopiert werden sollen

■ Beschreibung:

Die Funktion copy_date kopiert die Werte des ersten Arguments auf 
das zweite Argument.

@copy_time
void copy_time(time1,time2);

■ Parameter:

struct ZEIT *time1,*time2;   Zeiger auf Datumsstrukturen die
			     kopiert werden sollen

■ Beschreibung:

Die Funktion copy_time kopiert die Werte des ersten Arguments auf 
das zweite Argument. 

@get_file_date_info
int get_file_date_info(datei,date,time);

■ Parameter:

char *datei;           Vollständige Pfadangabe der Datei
struct DATUM *date;    Zeiger auf den Datumsstruct
struct ZEIT *time;     Zeiger auf Zeitstruct

■ Beschreibung:

Die Funktion get_file_date_info erfasst die aktuelle Erstellungs, 
bzw letzte Schreibzugriffszeit der Datei datei. Das Datum wird 
in date, die Zeit in time gespeichert.

@get_system_date
void get_system_date(date);

■ Parameter:

struct DATUM *date;    Zeiger auf den Datumsstruct

■ Beschreibung:

Die Funktion get_system_date holt das aktuelle Systemdatum des 
Rechners und speichert es in den Datumsstruct date.

@get_system_time
void get_system_time(time);

■ Parameter:

struct ZEIT *time;     Zeiger auf den Zeitstruct

■ Beschreibung:

Die Funktion get_system_time holt die aktuelle Systemzeit und 
speichert diese in dem Struct time.

@set_date
void set_date(date,tag,monat,jahr);

■ Parameter:

struct DATUM *date;               Zu setzendes Datum;
unsigned char *tag,*monat,*jahr;  Die Parameter des Datums.

■ Beschreibung:

Die Funktion set_date initialisiert das Datum date auf die 
angegebenen Werte tag,monat,jahr. Die Struktur DATUM wird in 
kiwi_inc.h definiert und beschreibt das Datum in der 
Form >tt.mm.jjjj<.

@set_time
void set_time(time,stunde,minute,sekunde,zehntel);

■ Parameter:

struct ZEIT *time;   Zeiger auf den Zeitstruct
char * stunde;       Stunden der Systemzeit
char * minute;       Minuten der Systemzeit
char * sekunde;      Sekunden der Systemzeit
char * zehntel;      Hunderstel der Systemzeit

■ Beschreibung:

Die Funktion set_time setzt die Werte des Structs time 
auf die angegeben Werte.

@set_system_date
void set_system_date(date);

■ Parameter:

struct DATUM *date;     Zeiger auf den Datumsstruct

■ Beschreibung:

Die Funktion set_system_date setzt das aktuelle Systemdatum 
des Rechners auf die Werte des Datumsstruct date.

@check_memory
int check_memory();

■ Beschreibung:

Die Funktion check_memory prüft ob noch Speicher im Heap oder 
Far Heap allokiert ist. Wenn ja wird die Funktion Mem_Display 
aufgerufen um ein Belegungsprotokoll am Bildschirm auszugeben. Diese 
Funktion sollte als letzte Funktion vor Verlassen des Programms 
benutzt werden, um zu prüfen ob alle Speicherbereiche befreit worden sind.

@Far_Mem_Used
unsigned long Far_Mem_Used();

■ Beschreibung:

Die Funktion Far_Mem_Used übergibt die Anzahl der aktuell im Far Heap 
besetzten Bytes.

@kw_farfree
void kw_farfree(*ptr);

■ Parameter:

void far *ptr;    Zeiger auf Speicherblock im Far Heap

■ Beschreibung:

Die Funktion kw_farfree befreit einen zuvor mit kw_farmalloc allokierten 
Speicherblock. Diese Funktion ersetzt die Funktion farfree oder _free.

@kw_farmalloc
void far *kw_farmalloc(size);

■ Parameter:

size_t size;   Anzahl Bytes

■ Beschreibung:

Die Funktion kw_farmalloc allokiert eine Speicherblock der Größe size 
im Far Heap. Diese Funktion ersetzt die Funktion farmalloc oder _fmalloc.

@kw_free
void kw_free(*ptr);

■ Parameter:

void *ptr;   Zeiger auf Speicherblock im Heap

■ Beschreibung:

Die Funktion kw_free befreit einen zuvor mit kw_malloc allokierten 
Speicherblock. Diese Funktion ersetzt die Funktion free.

@kw_malloc
void far *kw_malloc(size);

■ Parameter:

size_t size;     Anzahl Bytes

■ Beschreibung:

Die Funktion kw_malloc allokiert eine Speicherblock der Größe size 
im Heap. Diese Funktion ersetzt die Funktion malloc.

@Mem_Display
void Mem_Used(stream);

■ Parameter:

FILE *stream;    Ausgabekanal

■ Beschreibung:

Die Funktion Mem_Display übergibt ein Belegungsprotokoll des 
dynaischen Speichers.
